package com.bosch.in.rtp1.ept.manager;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.bosch.in.rtp1.ept.model.dto.BoxPlotFactor;
import com.bosch.in.rtp1.ept.model.dto.FshRcpChartValues;
import com.bosch.in.rtp1.ept.model.dto.HldDurByMonth;
import com.bosch.in.rtp1.ept.model.dto.RelHldChartFactor;

/**
 * Business Delegate interface to define contract of service which is used to manipulate chart creating
 * @author LIV1HC
 */

public interface ChartManager {
	/**
	 * Calculate data set for finished recipe diagrams 
	 * @return List<String> specify the path of created charts
	 * @throws IOException 
	 */
	List<String> getFshRcpsChart(List<FshRcpChartValues> chartValues, HttpServletRequest request,
			HttpServletResponse response, int year) throws IOException;
	
	/**
	 * Create diagrams for hold duration separated by HoldReasons 
	 * @return List<String> specify the path of created charts
	 * @throws IOException 
	 */
	List<String> getHldDurByMonth(List<HldDurByMonth> boxPlotFactors, HttpServletRequest request,
			HttpServletResponse response, int year) throws IOException;
	
	/**
	 * Calculate data set for released hold diagrams 
	 * @return String specify the path of created charts
	 * @throws IOException 
	 */
	String getRelHldsChart(List<RelHldChartFactor> relHldChartFactors, HttpServletRequest request,
			HttpServletResponse response, int year) throws IOException;
	
	/**
	 * Calculate data set for released hold diagrams 
	 * @return String specify the path of created charts
	 * @throws IOException 
	 */
	String getHldActChart(List<BoxPlotFactor> boxPlotFactors, HttpServletRequest request,
			HttpServletResponse response) throws IOException;
}
